#ifndef TASK_H
#define TASK_H

#include <string>
#include <ctime>

using namespace std;

class Task {
public:
    enum Priority { LOW, MEDIUM, HIGH };
    enum Category { STUDY, ENTERTAINMENT, LIFE };

    Task(int id = 0, const string& name = "", 
         time_t startTime = 0, Priority p = MEDIUM, 
         Category c = LIFE, time_t reminder = 0, bool reminded = false);


    int getId() const;
    string getName() const;
    time_t getStartTime() const;
    Priority getPriority() const;
    Category getCategory() const;
    time_t getReminderTime() const;
    bool isReminded() const;


    void setId(int id);
    void setName(const string& name);
    void setStartTime(time_t time);
    void setPriority(Priority p);
    void setCategory(Category c);
    void setReminderTime(time_t time);
    void setReminded(bool reminded);

 
    string serialize() const;
    static Task deserialize(const string& data);

private:
    int id_;
    string name_;
    time_t startTime_;
    Priority priority_;
    Category category_;
    time_t reminderTime_;
    bool isReminded_;
};

#endif
